// 引入核心库
import axios from 'axios'
// 通过querystring转化
import qsString from 'querystring'

//设置基础地址
let baseUrl = "/api";

//拦截器之请求拦截器
axios.interceptors.request.use((req)=>{
    if(req.url != '/api/userlogin'){
        req.headers.authorization = sessionStorage.getItem('userinfo')?JSON.parse(sessionStorage.getItem('userinfo')).token:null
    }
    return req
})
// 响应拦截器
axios.interceptors.response.use((res)=>{
    if(res.data.msg=='请设置请求头,并携带验证字符串'){
        alert(res.data.msg)
        //跳转到登录页
        router.push('/login')
    }
    if(res.data.msg=='登录已过期或访问权限受限'){
        alert(res.data.msg)
        //跳转到登录页
        router.push('/login')
    }
    return res
})
/* 
    全局封装get 方法
    url 地址
    params参数
*/
export const get = (url,params={})=>{
    return new Promise((reslove,reject)=>{
        axios.get(baseUrl+url,{
            params,
        })
        .then((res)=>{
            reslove(res)
        })
        .catch((err)=>{
            reject(err)
        })
    })
}
/* 
封装post方法
    url 地址
    params参数
    isFile 是否含有上传文件
*/
/* 
表单提交（post方式比较特殊）
content-type

值	描述
application/x-www-form-urlencoded	在发送前编码所有字符（默认）

multipart/form-data	
不对字符编码。
在使用包含文件上传控件的表单时，必须使用该值。
*/
export const post = (url,params={},isFile = false)=>{
    let data = {}
    if(isFile){
        data = new FormData()
        for(let i in params){
            data.append(i,params[i])
        }
    }else{
        data = qsString.stringify(params)
    }
    return new Promise((resolve,reject)=>{
        axios.post(baseUrl+url,data)
        .then((res)=>{
            resolve(res);
        })
        .catch((err)=>{
            reject(err)
        })
    })
}